package com.rw.test;

import com.rw.tool.util.random.RandomUtil;

import java.util.Scanner;

public class Tool {

    /**
     * 使玩家合法地输入一个从0到MAX之间的整数
     * @param max 整数上限
     * @return 玩家作出的选择
     */

    public static int numGet(int max) {
                boolean isLegal = true;
        Scanner scanner = new Scanner(System.in);
        String numTool = "";//接受玩家输入的数字
        while (isLegal) {
            numTool = scanner.nextLine();
            if (isNumeric(numTool)) {
                System.out.println("错误的输入类型！");
            } else if (Integer.parseInt(numTool) > max || Integer.parseInt(numTool) < 0) {
                System.out.println("错误的输入范围！");
            } else {
                isLegal = false;
            }
        }
        scanner.close();
        return Integer.parseInt(numTool);
    }

    private static boolean isNumeric(String str) {
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isDigit(str.charAt(i))) {
                return true;
            }
        }
        return false;
    }

    /**
     * 将卡牌列表转化为便于查看的对应的字符串形式
     * @param player 当前角色
     * @return 准备加入手牌的卡牌对应的字符串形式
     */
    public static String cardsShow(Player player) {
        int i = 0;
        StringBuilder temp = new StringBuilder();
        for (Cards card : player.handCardPreparing) {
            temp.append(i);
            temp.append('.');
            temp.append(card);
            temp.append('；');
            temp.append("/n");
            i++;
        }
        return temp.toString();
    }

    //武将删除方法

    /**
     * 投掷现有骰子并统计结果
     * @param player 当前角色
     * @return 【杀的数量，闪的数量，酒的数量，桃的数量】
     */
    public static int[] diceRoll(Player player){
        int R0 = 0;//杀的数量
        int R1 = 0;//闪的数量
        int R2 = 0;//酒的数量
        int R3 = 0;//桃的数量
        for (int i = 0; i < player.dice; i++) {
            int num = RandomUtil.nextInt(3);
            switch (num){
                case 0:R0 ++;
                case 1:R1 ++;
                case 2:R2 ++;
                case 3:R3 ++;
            }
        }
        return new int[]{R0,R1,R2,R3};
    }
}
